export default {}
// 类 , ES2015版本时，提出了类的语法。
// 构造函数
// function Plane (name:string){
//   this.name = name
// }

// let p = new Plane('大飞机')

class Person {
  // 对属性进行类型约束
  uname:string;
  age:number;
  // 类的构造器
  constructor (name:string, age: number){
    this.uname = name;
    this.age = age;
  };
  // 方法：
  sayHi(text:string){
    console.log(this.uname+"说:" + text);
    
  }
}

// 子类继承父类： 子类 extends  父类
class Student extends Person{
  sid: number
  className: string
  teacherName: string
  constructor(name:string, age: number,sid: number, className: string, teacherName:string){
    // 派生类的构造函数必须包含 "super" 调用。必须要把父类构造函数需要的参数，给传递过去。
    super(name,age)
    this.sid = sid
    this.className = className
    this.teacherName = teacherName
  }

  study(text:string){
    console.log(this.uname+"在学"+text);
    
  }
  // 同一个接口，不同的实现，从而可以实现面向对象编程中的多态。
  sayHi(v:string){
    console.log(`${this.uname}一边学习，一边说：${v}`);
  }
}

let s = new Student('李四',23,10001, '3-3','韩梅梅')
console.log(s);
s.sayHi('吃了吗？')
s.study('英语')
